{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.17.4'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array([1,2,3,4,5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2, 3, 4],\n",
       "       [4, 5, 6],\n",
       "       [6, 7, 8]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array([range(i, i+3) for i in [2, 4, 6]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.ones(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[3.14, 3.14, 3.14, 3.14, 3.14],\n",
       "       [3.14, 3.14, 3.14, 3.14, 3.14],\n",
       "       [3.14, 3.14, 3.14, 3.14, 3.14]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.full((3, 5), 3.14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.   , 0.125, 0.25 , 0.375, 0.5  , 0.625, 0.75 , 0.875, 1.   ])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linspace(0, 1, 9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(0)\n",
    "x1 = np.random.randint(10, size=6)\n",
    "x2 = np.random.randint(10, size=(3,4))\n",
    "x3 = np.random.randint(10, size=(3,4,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x3.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3, 4, 5)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x3.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "60"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x3.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int64')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x3.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [4, 5, 6]])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = np.array([[1,2,3]])\n",
    "y = np.array([[4,5,6]])\n",
    "np.concatenate((x,y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 4, 5, 6]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.concatenate((x,y), axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 1, 2, 3],\n",
       "       [4, 5, 6, 4, 5, 6]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid = np.array([[1,2,3],\n",
    "                [4,5,6]])\n",
    "np.concatenate((grid, grid), axis=1 )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.split?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.16666667, 1.        , 0.25      , 0.25      , 0.125     ])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.random.seed(0)\n",
    "\n",
    "def compute_reciprocals(values):\n",
    "    output = np.empty(len(values))\n",
    "    for i in range(len(values)):\n",
    "        output[i] = 1.0 / values[i]\n",
    "    return output\n",
    "        \n",
    "values = np.random.randint(1, 10, size=5)\n",
    "compute_reciprocals(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.55 s ± 42.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
     ]
    }
   ],
   "source": [
    "big_array = np.random.randint(1, 100, size=1000000)\n",
    "%timeit compute_reciprocals(big_array)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.08 ms ± 160 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit (1.0 / big_array)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "15"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = np.arange(1, 6)\n",
    "np.add.reduce(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[189 170 189 163 183 171 185 168 173 183 173 173 175 178 183 193 178 173\n",
      " 174 183 183 168 170 178 182 180 183 178 182 188 175 179 183 193 182 183\n",
      " 177 185 188 188 182 185]\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd \n",
    "data = pd.read_csv('data/president_heights.csv')\n",
    "heights = np.array(data['height(cm)'])\n",
    "print(heights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean height:        179.73809523809524\n",
      "Standard deviation: 6.931843442745892\n",
      "Minimum height:     163\n",
      "Maximum height:     193\n"
     ]
    }
   ],
   "source": [
    "print(\"Mean height:       \", heights.mean())\n",
    "print(\"Standard deviation:\", heights.std())\n",
    "print(\"Minimum height:    \", heights.min())\n",
    "print(\"Maximum height:    \", heights.max())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order</th>\n",
       "      <th>height(cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>42.000000</td>\n",
       "      <td>42.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>22.476190</td>\n",
       "      <td>179.738095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>13.152461</td>\n",
       "      <td>7.015869</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>163.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>11.250000</td>\n",
       "      <td>174.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>22.000000</td>\n",
       "      <td>182.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>33.750000</td>\n",
       "      <td>183.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>44.000000</td>\n",
       "      <td>193.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           order  height(cm)\n",
       "count  42.000000   42.000000\n",
       "mean   22.476190  179.738095\n",
       "std    13.152461    7.015869\n",
       "min     1.000000  163.000000\n",
       "25%    11.250000  174.250000\n",
       "50%    22.000000  182.000000\n",
       "75%    33.750000  183.000000\n",
       "max    44.000000  193.000000"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(365,)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# use pandas to extract rainfall inches as a NumPy array\n",
    "rainfall = pd.read_csv('data/Seattle2014.csv')['PRCP'].values\n",
    "inches = rainfall / 254.0  # 1/10mm -> inches\n",
    "inches.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn; seaborn.set()\n",
    "plt.hist(inches, 40);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
